// 提供复用的逻辑函数  数据懒加载

// hooks 封装逻辑，提供响应式数据。
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'
// 数据懒加载函数
// target 监听的Dom对象
// apiFn  监听的Api函数
export const useLazyData = (target, apiFn) => {
  // const target = ref(null)
  const result = ref([])
  // 需要
  // 1. 被观察的对象
  // 2. 不同的API函数
  //  stop 停止观察
  const { stop } = useIntersectionObserver(
    // 监听的目标元素
    target,
    // observerElement 被监视的元素
    ([{ isIntersecting }], observerElement) => {
      // isIntersecting  是否进入可视区
      if (isIntersecting) {
        // 如果进去可视区者停止调用
        stop()
        // 调用API获取数据
        apiFn().then(data => {
          result.value = data.result
        })
      }
    },
    // 配置可视区 触发   相交比例大于0就触发
    {
      threshold: 0
    }
  )
  // 返回--->数据（dom,后台数据）
  return result
}
